/*
 * @Author: c
 * @Date: 2024-02-06 10:39:42
 * @LastEditTime: 2024-03-18 21:13:50
 * @LastEditors: c
 * @Description: 
 * @FilePath: \music-web-backend\src\core\music\category\dao\cate.dao.ts
 * https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
// Copyright 2024 Administrator
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
//     http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import { Injectable } from "@nestjs/common";
import { InjectRepository } from "@nestjs/typeorm";
import { MinioClientService } from "src/core/system/minio/minio.service";
import { DataSource, Repository } from "typeorm";
import { Category } from "../entities/category.entity";
import { ICategory } from "../interface/category.interface";

@Injectable()
export class DCategory implements ICategory {


    constructor(
        @InjectRepository(Category) private categoryRepository: Repository<Category>,
        private dataSource: DataSource,
        private minioClientService: MinioClientService,
    ) { }

    async getCategoryListById(id: number): Promise<Category[]> {
        const build = await this.categoryRepository
            .createQueryBuilder("cate")
            .select([
                'cate.id',
                'cate.categoryName',
                'cate.parentId',
                'cate.icon',
                'cate.sort',
                'cate.isActive',
                'cate.createTime',
            ])
            .where('cate.parentId =:id', { id })
            .orderBy("cate.createTime", 'DESC')


        const data = await build.getMany();

        return data
    }


    async page(): Promise<Category[]> {
        const build = await this.categoryRepository
            .createQueryBuilder("cate")
            .select([
                'cate.id',
                'cate.categoryName',
                'cate.parentId',
                'cate.icon',
                'cate.sort',
                'cate.isActive',
                'cate.createTime',
            ])
            .orderBy("cate.createTime", 'ASC')

        const data = await build.getMany();

        return data
    }


}